const crypto = require('crypto-js'); //  crypto-js




// 加密方法
const encrypt = (data) => {
	// 偏移向量 十六位十六进制数作为密钥偏移量
	const iv = crypto.enc.Utf8.parse('HZZCRJJSYXGS1234');
	const dataStr = data.replace(/\r\n/g, '').replace(/\n/g, '')
	// 加密盐 十六位十六进制数作为密钥
	const key = crypto.enc.Utf8.parse("1234HZZCRJJSYXGS");
	const srcs = crypto.enc.Utf8.parse(dataStr);
	const encrypted = crypto.AES.encrypt(srcs, key, {
		iv,
		mode: crypto.mode.CBC,
		padding: crypto.pad.Pkcs7 // 加密模式为ECB，补码方式为PKCS5Padding（也就是PKCS7）
	});
	return encrypted.toString(); // encrypted.ciphertext.toString().toUpperCase();
}

// 解密方法
const decrypt = (data) => {
	// 偏移向量 十六位十六进制数作为密钥偏移量
	// const iv = crypto.enc.Utf8.parse(ivParams);
	const dataStr = data ? data.replace(/\r\n/g, '').replace(/\n/g, '') : data
	// 加密盐 十六位十六进制数作为密钥
	// const key = crypto.enc.Utf8.parse(keyParams);
	// 偏移向量 十六位十六进制数作为密钥偏移量
	const iv = crypto.enc.Utf8.parse('HZZCRJJSYXGS1234');

	// 加密盐 十六位十六进制数作为密钥
	const key = crypto.enc.Utf8.parse("1234HZZCRJJSYXGS");
	const decryptStr = crypto.AES.decrypt(dataStr, key, {
		iv,
		mode: crypto.mode.CBC,
		padding: crypto.pad.Pkcs7
	});
	const decryptedStr = crypto.enc.Utf8.stringify(decryptStr);
	return decryptedStr.toString();
}

module.exports = {
	encrypt,
	decrypt,
}